package com.yzq.api.aliyunai.enums;

import lombok.Getter;

/**
 * 文生图任务状态枚举类
 * 对应阿里云接口返回的 task_status 字段枚举值
 */
@Getter
public enum TaskStatusEnum {

    /** 任务排队中 */
    PENDING("PENDING", "任务排队中"),

    /** 任务处理中 */
    RUNNING("RUNNING", "任务处理中"),

    /** 任务执行成功 */
    SUCCEEDED("SUCCEEDED", "任务执行成功"),

    /** 任务执行失败 */
    FAILED("FAILED", "任务执行失败"),

    /** 任务取消成功 */
    CANCELED("CANCELED", "任务取消成功"),

    /** 任务不存在或状态未知 */
    UNKNOWN("UNKNOWN", "任务不存在或状态未知");

    // 获取原始状态码（用于反序列化匹配）
    /** 接口返回的原始状态值 */
    private final String code;

    // 获取状态描述
    /** 状态描述（中文） */
    private final String description;

    // 构造方法
    TaskStatusEnum(String code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据接口返回的字符串码值匹配枚举实例
     * @param code 接口返回的 task_status 字符串（如"SUCCEEDED"）
     * @return 匹配的枚举实例，若未匹配则返回 UNKNOWN
     */
    public static TaskStatusEnum fromCode(String code) {
        for (TaskStatusEnum status : values()) {
            if (status.code.equalsIgnoreCase(code)) {
                return status;
            }
        }
        return UNKNOWN;
    }
}